from PIL import Image, ImageEnhance
import numpy as np
import os

def image_convert(input_image_path):
    # 打开图片
    img = Image.open(input_image_path)

    # 转换为RGBA模式（包含Alpha通道）
    img = img.convert("RGBA")

    # 获取图片数据
    data = np.array(img)

    # 替换白色像素为黑色
    # 这里假设白色像素的RGB值是 (255, 255, 255)，透明度通道不变
    data[(data[:, :, 0] == 255) & (data[:, :, 1] == 255) & (data[:, :, 2] == 255)] = [0, 0, 0, 255]

    # 将修改后的数据转换回图像
    new_img = Image.fromarray(data)
    
    # 保存新图片
    output_image_path = os.path.join(os.path.dirname(__file__), "new_image.png")
    new_img.save(output_image_path)

    # 显示新图片
    new_img.show()
    
    return output_image_path 

# 修改对比度    
def image_convert_duibidu(input_image_path, output_image_path):
    # 打开图片
    img = Image.open(input_image_path)

    # 转换为灰度图像 灰度图像是指图像中的每个像素只包含一个亮度值，而不是RGB三个通道的颜色信息
    gray_img = img.convert('L')

    # 创建对比度增强对象
    enhancer = ImageEnhance.Contrast(gray_img)

    # 增加对比度，值大于1.0会增强对比度
    enhanced_img = enhancer.enhance(3.0)  # 可以尝试其他值来调整效果 太高会导致有些噪声点变亮,最后变成白点

    # 将图像转换为 NumPy 数组
    img_array = np.array(enhanced_img)

    # 应用阈值将背景设为黑色
    # 假设背景像素值接近0（黑色），我们设置一个阈值来区分背景和前景
    threshold = 250  # 可调节，取决于图像的亮度 灰度图片只用一个数字表示亮度：0 表示黑色，255 表示白色，中间的值表示不同的灰色阴影
    img_array[img_array < threshold] = 0  # 背景部分变为黑色

    # 将处理后的数组转换回图像
    final_img = Image.fromarray(img_array)

    # 显示修改后的图像
    # final_img.show()

    # 保存图像
    # output_image_path = os.path.join(os.path.dirname(__file__), "new_image.png")
    final_img.save(output_image_path)
    
    return output_image_path
